هر گاه بخواهید یک مجموعه کد به دفعات مشخص و یا رسیدن به یک نتیجه مشخص تکرار شود، باید از حلقه استفاده کنید. حلقه ها در جاوااسکریپت دو نوع هستند، یکی حلقه for و دیگری حلقه while که هر کدام از آنها هم ممکن است بسته به موقعیت کد مدلهای مختلفی داشته باشند که در ادامه با کار آنها آشنا خواهید شد.
ادامه مطلب را بخوانید...
حلقه for
در این حلقه، مجموعه کد مورد نظر به تعداد مشخص تکرار می شود که در ابتدای حلقه تعداد دفعات اجرای کد باید اعلام شود. پس هرگاه می دانستید که چند بار قرار است کد اجرا شود از این حلقه استفاده کنید. بطور مثال می خواهیم اعداد از 0 تا 10 در صفحه چاپ شوند:
خب برای اجرای این مثال ابتدا کلمه for را نوشتیم تا شروع حلقه را به مفسر اعلام کنیم سپس یک پرانتز باید باز کنیم تا پارامترهای لازم برای تکرار در این حلقه را وارد کنیم. اولین پارامتری که باید وارد شود، یک متغیر است با مقداردهی اولیه که به آن initial expression یا همان عبارت آغازین می گویند. سپس دومین پارامتر که یک شرط است و مفهوم آن اینست که حلقه باید ادامه پیدا کند تا متغیر کوچکتر یا برابر با عدد 10 بشود. سومین پارامتر به عبارت افزاینده یا increment expression معروف است که در اینجا به این مفهوم می باشد که در هر بار اجرای حلقه یک واحد باید به متغیر افزوده شود. در انتهای اعلام پارامترها پرانتز را می بندیم. فقط دقت کنید که در این پرانتز هر پارامتری که نوشته شود بلافاصله بعد از آن باید علامت ; قرار گیرد تا تداخلی بین آنها بوجود نیاید.
بطور ساده پارامترهای داخل پرانتز را می توانیم اینچنین بیان کنیم: مقدار اولیه متغیر سپس مقدار نهایی و در آخر هم ترتیب افزایش متغیر در هر تکرار حلقه. ناگفته نماند که حتماً نباید مقدار افزایشی باشد، می تواند به ترتیب کم شود که همه مقادیر برعکس خواهند شد.
در خط بعد هم نتیجه را مابین آکلاد می گذاریم تا به اسکریپت نظم دهیم و سپس دستور تایپ نتیجه که کلمه number را چون می خواهیم عیناً در صفحه چاپ شود داخل " " گذاشتیم و بعد + که با پارامترهای دیگه ترکیب بشود. البته در اینجا بجای علامت بعلاوه می توانید کاما هم بگذارید و بعد از آن متغیر تعریف شده و در انتهای آنها از تگ br استفاده کردیم تا هربار که حلقه تکرار می شود نتیجه در یک خط جدید چاپ شود.
حلقه while
نوع دیگر حلقه ها، حلقه while می باشد که بر خلاف حلقه for لزومی ندارد که متغیرها را در داخل پرانتز به عنوان پارامتر حلقه اعلام کنیم و همچنین در مواردی هم که مقدار انتهایی حلقه مشخص نیست می توانیم از این نوع استفاده کنیم چون کد مورد نظر تا جایی که نتیجه دلخواه بدست بیاید تکرار خواهد شد. البته این نوع حلقه را می توانیم بجای حلقه for هم بکار بریم یعنی اگر مقدار نهایی متغیر هم داشته باشیم این حلقه کاربرد خواهد داشت. مثال بالا را در مورد این حلقه می توانیم به این صورت ذکر کنیم:
while (i <= 10)
{
document.write(" Number " + i + "
")
i++
}
کلمه while را می توانیم ترجمه کنیم به مادامیکه ، پس در اینجا ما متغیر را جداگانه تعریف کردیم و حالا می گوییم، مادامیکه شرط کوچکتر یا مساوی 10 بودن برقرار نیست حلقه را تکرار کن و یک واحد به آن اضافه کن تا بالاخره شرط ما درست دربیاید.
حلقه Do...while
یک نوع حلقه دیگر در جاوااسکریپت وجود دارد که در حقیقت برعکس حلقه while می باشد. در این حلقه، شرط در آخر بدنه حلقه بررسی می شود یعنی یکسری دستور اجرا می شود سپس شرط بررسی می گردد که آیا به نتیجه مورد نظر رسیده است یا نه که اگر نتیجه درست نبود دوباره باز تکرار خواهد شد. فرق این حلقه با حلقه while در اینست که حداقل یکبار دستورات اجرا خواهند شد ولی در حلقه while ممکن بود در صورت برقرار بودن شرط در همان ابتدا دیگر دستورات اجرا نشوند. حالا به مثال زیر توجه کنید تا کاملاً موضوع را درک کنید:
do
{
document.write(" Number " + i + "
")
i=i+1
}
while (i <= 10)
در اینجا همه چی مانند مثالهای بالا است با این تفاوت که کلمه do به ابتدای حلقه اضافه شده و بررسی شرط هم به انتهای حلقه منتقل شده. همانطور که میدانید یکی از معنی های do انجام دادن کاری است. مفهوم این کد هم بدین گونه است که دستور چاپ را انجام بده و یک واحد به متغیر اضافه کن مادامیکه متغیر کوچکتر یا مساوی با عدد 10 بشود. پس این دستورات حداقل یکبار اجرا می شوند تا به شرط برسند، شما می توانید برای رسیدن به صحت این گفته مقدار متغیر را بجای صفر به یک عدد دیگر تغییر دهید مثلاً عدد 20 را بدهید و یکبار کد را اجرا کنید.
در این مثال نوع دیگر افزایش هم نشان داده شده است که شما می توانید از این مدل هم استفاده کنید.
break
مثالهایی که در بالا ذکر شد همگی ساده بودند اما هنگامیکه شما نیاز به نوشتن حلقه های پیچیده تری دارید، باید دقت کنید که حلقه شما دچار حلقه بی نهایت یا همان حلقه نامتناهی نشود. بطور مثال یک مقدار اولیه برای متغیر در نظر می گیرید و یک شرطی هم تعیین می کنید اما هیچگاه شرط حلقه درست نخواهد شد که حلقه از تکرار باز ایستد و همینطور اجرای کد ادامه پیدا می کند تا خود کاربر آن را با بستن مرورگر متوقف کند و گاهی حتی مجبور به راه اندازی مجدد کامپیوتر خواهد شد.
برای جلوگیری از همچین اتفاقی می توانید از دستور break استفاده کنید و یک شرطی هم برای آن در نظر بگیرید تا از حلقه های بی نهایت جلوگیری شود.
while (i >= 10)
{
document.write(" Number " + i + "
")
i++
if ( i == 21 ) break
}
در این حلقه هیچگاه شرط درست نخواهد بود و تا بی نهایت ادامه پیدا می کند اما با استفاده از دستور break و شرطی که در نظر گرفتیم از تکرار نا محدود این حلقه جلوگیری کردیم در حقیقت از حلقه خارج شدیم. پس استفاده از این دستور را برای حلقه های پیچیده در نظر داشته باشید تا با مشکلات جدی مواجه نشوید.
نظرات شما عزیزان: